home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / lang_asm / objxref / xrname.asm < prev    next >
Assembly Source File  |  1986-04-26  |  3KB  |  150 lines

  1.  PAGE    81,128
  2.  TITLE    XRNAME    - Get Module name for search and complete search
  3.  SUBTTL    V1.0 - May 1986    - Cross    Reference Facility
  4. ;
  5. ;=============================================================================|
  6. ;         Copyright 1986 - Dan Daetwyler - Springdale, AR 72764          |
  7. ;=============================================================================|
  8.     IF1
  9.     INCLUDE    SDA.MAC
  10.     ENDIF
  11.     .SALL
  12. ;
  13. DATA    SEGMENT    BYTE PUBLIC 'DATA'
  14. ;
  15.     EXTRN    IOB:WORD,FTLEN:WORD,FTAB:BYTE,FHAN:WORD
  16.     .XLIST
  17.     INCLUDE    IOSCB.INC
  18.     .LIST
  19. ;
  20. SNAME    DB    ?
  21. MNAME    DB    12 DUP (?)
  22. WORK    DB    20 DUP (?)
  23. ;
  24. ERR1    DB    'Public name not found - Try again - Esc to exit',0
  25. ERR2    DB    'Seek failure - Returning to main menu',0
  26. ERR3    DB    '***MORE*** Press "ENTER" to continue',0
  27. ERR4    DB    '                                     ',0
  28. ;
  29. IBUF    DB    3000 DUP (?)    ;Read buffer
  30. ;
  31. DATA    ENDS
  32. ;
  33. CODE    SEGMENT    BYTE PUBLIC 'CODE'
  34.     ASSUME    CS:CODE,DS:DATA,ES:DATA
  35. ;
  36. ;==============================================================================
  37. ; Entry    Point    XRNAME                                  |
  38. ;==============================================================================
  39. ;                                          |
  40. ;  This    procedure solicits the module name for the search, and having got     |
  41. ;  a name, it then completes the search    display.  Control is returned to      |
  42. ;  the caller after search is completed.  Note that an invalid name will      |
  43. ;  cause an error message, and the module will then wait for a proper name    |
  44. ;  to be entered.                                  |
  45. ;                                          |
  46. ; Entry    conventions:    None.                              |
  47. ;                                          |
  48. ; Returns:        None.                              |
  49. ;                                          |
  50. ;==============================================================================
  51. ;
  52.     EXTRN
  53. ;
  54.     PUBLIC    XRNAME
  55. ;
  56. XRNAME    PROC    NEAR
  57.     MOV    IOB.FLD,3
  58.     CALL    CLEAR
  59.     $FDINP    IOB,2,MNAME
  60.     CMP    IOB.TVL,27
  61.     JNE    GOON
  62.     RET
  63. GOON:    MOV    CX,12
  64.     MOV    DI,OFFSET MNAME
  65.     MOV    AL,' '
  66.     REPNE    SCASB            ;Scan for trailing blank
  67.     DEC    DI
  68.     SUB    DI,OFFSET MNAME        ;Compute length    of name
  69.     MOV    AX,DI
  70.     MOV    SNAME,AL        ;  and save as prefix
  71.     MOV    SI,OFFSET FTAB
  72.     MOV    DX,FTLEN
  73.     ADD    DX,SI
  74. SLP:    CALL    COMP            ;Compare search    name against directory
  75.     JE    HIT
  76.     ADD    SI,16
  77.     CMP    SI,DX
  78.     JB    SLP
  79.     $SERRM    IOB,24,ERR1
  80.     JMP    XRNAME
  81. HIT:    MOV    DX,WORD    PTR [SI+14]
  82.     XOR    CX,CX
  83.     MOV    BX,FHAN
  84.     MOV    AX,4200H
  85.     INT    21H            ;Seek to entry in file
  86.     JNC    OK1
  87.     $SERRM    IOB,24,ERR2
  88.     RET
  89. OK1:    MOV    DX,OFFSET IBUF
  90.     MOV    AH,3FH
  91.     MOV    CX,3000
  92.     INT    21H            ;Read block (max = 3000)
  93.     MOV    SI,OFFSET IBUF
  94.     MOV    IOB.FLD,3
  95. DLP:    CALL    MOVE
  96.     JC    EXIT
  97.     INC    IOB.FLD
  98.     CMP    IOB.FLD,63
  99.     JBE    DLP
  100.     $SERRM    IOB,24,ERR3
  101.     $FDOUT    IOB,,WORK
  102.     $FDOIN    IOB,63,WORK
  103.     MOV    IOB.FLD,4
  104.     CALL    CLEAR
  105.     MOV    IOB.FLD,4
  106.     JMP    DLP
  107. EXIT:    RET
  108. XRNAME    ENDP
  109. ;
  110. COMP    PROC    NEAR
  111.     PUSH    SI
  112.     MOV    DI,OFFSET SNAME
  113.     MOV    CL,SNAME
  114.     XOR    CH,CH
  115.     REPE    CMPSB
  116.     POP    SI
  117.     RET
  118. COMP    ENDP
  119. ;
  120. MOVE    PROC    NEAR
  121.     MOV    CL,BYTE    PTR [SI]
  122.     XOR    CH,CH
  123.     CMP    CL,0FFH
  124.     JNE    MOK
  125.     STC
  126.     RET
  127. MOK:    MOV    DI,OFFSET WORK
  128.     INC    SI
  129.     REP    MOVSB
  130.     XOR    AL,AL
  131.     STOSB
  132.     PUSH    SI
  133.     $FDOUT    IOB,,WORK
  134.     POP    SI
  135.     CLC
  136.     RET
  137. MOVE    ENDP
  138. ;
  139. CLEAR    PROC    NEAR
  140. CLRLP:    $FDCLR    IOB
  141.     INC    IOB.FLD
  142.     CMP    IOB.FLD,63
  143.     JBE    CLRLP
  144.     RET
  145. CLEAR    ENDP
  146. ;
  147. CODE    ENDS
  148. ;
  149.     END
  150.